package in.rob.client;
import in.lib.Constants;
import in.lib.adapter.PhonePageAdapter;
import in.lib.helper.ThemeHelper;
import in.lib.manager.CacheManager;
import in.lib.manager.SettingsManager;
import in.lib.manager.UserManager;
import in.lib.view.JazzyViewPager;
import in.lib.view.JazzyViewPager.TransitionEffect;
import in.rob.client.base.RobinSlidingActivity;
import in.rob.client.dialog.NewPostDialog;
import in.rob.client.navigation.NavigationFragment;
import in.rob.client.page.GlobalPage;
import in.rob.client.page.MentionsPage;
import in.rob.client.page.TimelinePage;
import in.rob.client.widget.RobinDashClockExtension;
import java.util.LinkedHashMap;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import com.slidingmenu.lib.SlidingMenu;
public class MainActivity extends RobinSlidingActivity
{
private int mStartPage = 0;
private boolean mForceRefreshMentions = false;
@Override public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try
{
int menuRes = ThemeHelper.getDrawableResource(getContext(), R.attr.rbn_icon_menu);
((ImageButton)getSupportActionBar().getCustomView().findViewById(R.id.up_button)).setImageResource(menuRes);
getSupportActionBar().getCustomView().findViewById(R.id.up_button).setContentDescription(getString(R.string.nav_menu));
}
catch (Exception e){}
}
@Override protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
retrieveArguments(intent.getExtras());
}
@Override public void retrieveArguments(Bundle instances)
{
super.retrieveArguments(instances);
if (instances != null)
{
if (instances.containsKey(Constants.EXTRA_SELECT_USER))
{
List<String> users = UserManager.getLinkedUserIds(getContext());
String selectUser = instances.getString(Constants.EXTRA_SELECT_USER);
for (int index = 0; index < users.size(); index++)
{
if (users.get(index).equals(selectUser))
{
if (!UserManager.getUserId().equals(selectUser))
{
instances.remove(Constants.EXTRA_SELECT_USER);
UserManager.selectUser(getContext(), index, false);
Intent main = new Intent(getContext(), MainActivity.class);
main.putExtras(instances);
main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
main.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
main.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(main);
return;
}
break;
}
}
}
if (instances.getBoolean(Constants.EXTRA_OPEN_THREAD, false))
{
Intent threadDetails = new Intent(getContext(), ThreadActivity.class);
threadDetails.putExtras(instances);
startActivity(threadDetails);
SharedPreferences prefs = getSharedPreferences(getPackageName(), Context.MODE_PRIVATE);
prefs.edit()
.remove(Constants.PREFS_NOTIFICATION_ID + UserManager.getUserId())
.remove(Constants.PREFS_NOTIFICATION_COUNT + UserManager.getUserId())
.apply();
CacheManager.getInstance().removeFile(Constants.PREFS_NOTIFICATION_PREVIEW_LINES + UserManager.getUserId());
}
if (instances.containsKey(Constants.EXTRA_START_PAGE))
{
mStartPage = instances.getInt(Constants.EXTRA_START_PAGE);
SharedPreferences prefs = getSharedPreferences(getPackageName(), Context.MODE_PRIVATE);
prefs.edit()
.remove(Constants.PREFS_NOTIFICATION_ID + UserManager.getUserId())
.remove(Constants.PREFS_NOTIFICATION_COUNT + UserManager.getUserId())
.apply();
CacheManager.getInstance().removeFile(Constants.PREFS_NOTIFICATION_PREVIEW_LINES + UserManager.getUserId());
if (getAdapter() != null && getViewPager() != null)
{
TransitionEffect effect = ((JazzyViewPager)getViewPager()).getEffect();
((JazzyViewPager)getViewPager()).setTransitionEffect(TransitionEffect.Standard);
getViewPager().setCurrentItem(mStartPage, true);
((JazzyViewPager)getViewPager()).setTransitionEffect(effect);
getAdapter().onPageSelected(mStartPage);
showAbove();
}
}
if (instances.containsKey(Constants.EXTRA_CLEAR_DASH))
{
Intent service = new Intent(getContext(), RobinDashClockExtension.class);
getContext().startService(service);
getContext().stopService(service);
}
mForceRefreshMentions = instances.getBoolean(Constants.EXTRA_FORCE_REFRESH, false);
}
}
@Override public void setup(boolean isPhone)
{
PhonePageAdapter adapter = new PhonePageAdapter(getContext(), getSupportFragmentManager(), getViewPager(), createPages(), getSupportActionBar().getCustomView());
setAdapter(adapter);
getViewPager().setAdapter(adapter);
getViewPager().setCurrentItem(mStartPage);
if (!isPhone && getAdapter().getCount() <= 2)
{
getAdapter().setIndicatorVisible(false);
}
}
public LinkedHashMap<Class, Bundle> createPages()
{
LinkedHashMap<Class, Bundle> pages = new LinkedHashMap<Class, Bundle>(3);
Bundle bundle1 = new Bundle();
bundle1.putString(Constants.EXTRA_TITLE, getString(R.string.timeline));
pages.put(TimelinePage.class, bundle1);
Bundle bundle2 = new Bundle();
bundle2.putString(Constants.EXTRA_TITLE, getString(R.string.mentions));
bundle2.putBoolean(Constants.EXTRA_FORCE_REFRESH, mForceRefreshMentions);
pages.put(MentionsPage.class, bundle2);
if (SettingsManager.isGlobalEnabled())
{
Bundle bundle3 = new Bundle();
bundle3.putString(Constants.EXTRA_TITLE, getString(R.string.global));
pages.put(GlobalPage.class, bundle3);
}
return pages;
}
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == Constants.REQUEST_SETTINGS)
{
if (resultCode == Constants.RESULT_REFRESH && data.hasExtra(Constants.EXTRA_REFRESH_GLOBAL))
{
LinkedHashMap<Class, Bundle> pages = createPages();
NavigationFragment nav = (NavigationFragment)getSupportFragmentManager().findFragmentById(R.id.frame);
if (SettingsManager.isGlobalEnabled())
{
nav.mGlobalButton.setVisibility(View.VISIBLE);
getAdapter().setIndicatorVisible(true);
}
else
{
nav.mGlobalButton.setVisibility(View.GONE);
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE
&& (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE))
{
getAdapter().setIndicatorVisible(false);
}
}
getAdapter().setPages(pages);
getAdapter().notifyDataSetChanged();
return;
}
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_MENU && !handledLongPress && (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) < Configuration.SCREENLAYOUT_SIZE_LARGE)
{
toggle(SlidingMenu.LEFT);
return true;
}
handledLongPress = false;
return super.onKeyUp(keyCode, event);
}
@Override public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.menu_new_post:
{
Intent in = new Intent(this, NewPostDialog.class);
startActivityForResult(in, Constants.REQUEST_NEW_POST);
break;
}
}
return super.onOptionsItemSelected(item);
}
@Override public void onClick(View v)
{
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE
&& (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
)
{
return;
}
if (v.getId() == R.id.up_button)
{
toggle(SlidingMenu.LEFT);
}
}
}